﻿// 5842. 拆树.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

/*
https://www.acwing.com/problem/content/5845/

给定一棵 n
 个节点的树，节点编号 1∼n
。

其中，节点 i
 的父节点为 fi
（根节点没有父节点，所以根节点的 fi
 用 0
 表示），权值为 vi
。

请你删除树中的两条边，将树拆分为三个非空部分。

每个部分的权值等于该部分包含的所有节点的权值之和。

我们希望拆分出的三个部分的权值相等。

请你给出一种合理的拆分方案。

输入格式
第一行包含整数 n
。

接下来 n
 行，其中第 i
 行包含 fi
 和 vi
。

输出格式
如果无解，则输出 -1。

否则，输出两个整数 a,b
，表示删除的两条边为 (a,fa)
 和 (b,fb)
。

如果方案不唯一，输出任意合理方案均可。

数据范围
前 6
 个测试点满足 3≤n≤10
。
所有测试点满足 3≤n≤106
，0≤fi≤n
，−100≤vi≤100
。

输入样例1：
6
2 4
0 5
4 2
2 1
1 1
4 2
输出样例1：
1 4
输入样例2：
6
2 4
0 6
4 2
2 1
1 1
4 2
输出样例2：
-1
*/
#include <iostream>

int main()
{
    std::cout << "Hello World!\n";
}

 